﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Entities;
using Logic;

namespace Add_auto
{
    public partial class Menu : Form
    {
        public Menu()
        {
            InitializeComponent();
        }

        public Autopark Aut = new Autopark();

        public Menu(Autopark G)
        {
            InitializeComponent();
            Aut = G;
        }

        private void Print()
        {
            

                for (int i = 0; i < Aut.Autos.Count; i++)
                {
                    String s = Aut.Autos[i].GetType().ToString();
                    switch (s)
                    {
                        case "Entities.Abstract_auto":
                            listBox1.Items.Add(((Abstract_auto)Aut.Autos[i]).Name + " - " + ((Abstract_auto)Aut.Autos[i]).Price);
                            break;
                        case "Entities.Bus":
                            listBox1.Items.Add(((Bus)Aut.Autos[i]).Name + " - " + ((Bus)Aut.Autos[i]).Price);
                            break;
                        case "Entities.Grusovoi":
                            listBox1.Items.Add(((Grusovoi)Aut.Autos[i]).Name + " - " + ((Grusovoi)Aut.Autos[i]).Price);
                            break;
                        case "Entities.Legkovoi":
                            listBox1.Items.Add(((Legkovoi)Aut.Autos[i]).Name + " - " + ((Legkovoi)Aut.Autos[i]).Price);
                            break;
                        case "Entities.Truck":
                            listBox1.Items.Add(((Truck)Aut.Autos[i]).Name + " - " + ((Truck)Aut.Autos[i]).Price);
                            break;

                    }
                }
            }
        

        private void Menu_Load(object sender, EventArgs e)
        {
             
                Print();
             
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
                New_auto NA = new New_auto();
                
                NA.ShowDialog();
                
                Autopark N_A = NA.aut;

                

                for (int i = 0; i < N_A.Autos.Count; i++)
                {
                    if (this.listBox1.SelectedItem == null)
                    {

                    String s = N_A.Autos[i].GetType().ToString();
                    switch (s)
                    {
                        case "Entities.Abstract_auto":
                            Aut.Add((Abstract_auto)N_A.Autos[i]);
                            break;
                        case "Entities.Bus":
                            Aut.Add((Bus)N_A.Autos[i]);
                            break;
                        case "Entities.Truck":
                            Aut.Add((Truck)N_A.Autos[i]);
                            break;
                        case "Entities.Legkovoi":
                            Aut.Add((Legkovoi)N_A.Autos[i]);
                            break;
                        case "Entities.Grusovoi":
                            Aut.Add((Grusovoi)N_A.Autos[i]);
                            break;

                    }
                }

                }

                listBox1.Items.Clear();

                Print();
            }
        

        private void button2_Click(object sender, EventArgs e)
        {
            int temp = listBox1.SelectedIndex;
            listBox1.Items.RemoveAt(temp);
            Aut.Autos.RemoveAt(temp);
            
        }

        private void label1_Click(object sender, EventArgs e)
        {
            
        }

        private void button3_Click(object sender, EventArgs e)
        {
            label1.Text = "Сумма - " + Calculator.GetTotalPrice(Aut).ToString();
        }

        private void button4_Click(object sender, EventArgs e)

        {
            if (this.listBox1.SelectedItem == null) { MessageBox.Show("Выберите авто"); }
            
            else
            {

                int temp = listBox1.SelectedIndex;

                String s = Aut.Autos[temp].GetType().ToString();
                switch (s)
                {
                    case "Entities.Abstract_auto":
                        MessageBox.Show("Название авто: " + ((Abstract_auto)Aut.Autos[temp]).Name + "\nМощность: " + ((Abstract_auto)Aut.Autos[temp]).Power + "\nСтоимость: " + ((Abstract_auto)Aut.Autos[temp]).Price);
                        break;
                    case "Entities.Legkovoi":
                        MessageBox.Show("Название авто: " + ((Legkovoi)Aut.Autos[temp]).Name + "\nМощность: " + ((Legkovoi)Aut.Autos[temp]).Power + "\nСтоимость: " + ((Legkovoi)Aut.Autos[temp]).Price + "\nМаксимальная скорость: " + ((Legkovoi)Aut.Autos[temp]).Speed);
                        break;
                    case "Entities.Grusovoi":
                        MessageBox.Show("Название авто: " + ((Grusovoi)Aut.Autos[temp]).Name + "\nМощность: " + ((Grusovoi)Aut.Autos[temp]).Power + "\nСтоимость: " + ((Grusovoi)Aut.Autos[temp]).Price + "\nВес: " + ((Grusovoi)Aut.Autos[temp]).Weight);
                        break;
                    case "Entities.Bus":
                        MessageBox.Show("Название авто: " + ((Bus)Aut.Autos[temp]).Name + "\nМощность: " + ((Bus)Aut.Autos[temp]).Power + "\nСтоимость: " + ((Bus)Aut.Autos[temp]).Price + "\nВес: " + ((Bus)Aut.Autos[temp]).Weight + "\nКол-во мест: " + ((Bus)Aut.Autos[temp]).Seats);
                        break;
                    case "Entities.Truck":
                        MessageBox.Show("Название авто: " + ((Truck)Aut.Autos[temp]).Name + "\nМощность: " + ((Truck)Aut.Autos[temp]).Power + "\nСтоимость: " + ((Truck)Aut.Autos[temp]).Price + "\nВес: " + ((Truck)Aut.Autos[temp]).Weight + "\nГрузоподъемность: " + ((Truck)Aut.Autos[temp]).Capacity);
                        break;

                }

            }

            

                
        }
    }
}
